/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;
import java.util.LinkedList;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;
import modelos.ModeloIngrediente;

/**
 *
 * @author usuario
 */
public class ControladorListado implements ActionListener {
    private vistas.VistaListado vista;
    private modelos.ModeloIngrediente modeloIngrediente;
    private modelos.ModeloProducto modeloProducto;
    private final DefaultTableModel modeloTabla;
    Vector<String> fila;
    public ControladorListado(vistas.VistaListado aThis) {
        vista= aThis;
        modeloIngrediente= new modelos.ModeloIngrediente();
        modeloProducto = new modelos.ModeloProducto();
        vista.addListener(this);
        modeloTabla= new DefaultTableModel();
        vista.getTblGeneral().setModel(modeloTabla);
    }

    public void actionPerformed(ActionEvent ae) {
        if(ae.getSource().equals(vista.getIngrediente())){
            consultarIngredientes();
        }
        else if(ae.getSource().equals(vista.getProductos())){
                consultarProductos();
        }
        else if(ae.getSource().equals(vista.getMas())){
                consultarMas();
        }
        else if(ae.getSource().equals(vista.getCancelar()))
                reiniciar();
        else
            vista.setVisible(false);
            
    }



    public void tituloIngredientes(){
        fila= new Vector<String>();
        fila.add("Ingrediente");
        fila.add("Stock en Almacen");
        modeloTabla.setColumnIdentifiers(fila);
    }

    public void tituloProductos(){
        fila= new Vector<String>();
        fila.add("Producto");
        fila.add("Total Generado");
        fila.add("Cantidad Vendida");
        modeloTabla.setColumnIdentifiers(fila);
    }

    public void tituloMas(){
        fila= new Vector<String>();
        fila.add("Ingrediente");
        fila.add("Cantidades Usadas");
        modeloTabla.setColumnIdentifiers(fila);
    }


    public void agregarFila(ModeloIngrediente m){
        fila= new Vector<String>();
        fila.add(m.getDescripcion());
        fila.add(""+m.getStock());
        modeloTabla.addRow(fila);
    }

    public void agregarFila(String[] v){
        fila = new Vector<String>();
        for (int i = 0; i < v.length; i++)
            fila.add(v[i]);
        modeloTabla.addRow(fila);
    }

    private void consultarIngredientes() {
        reiniciar();
        tituloIngredientes();
        LinkedList<ModeloIngrediente> v = modeloIngrediente.listar();
        for (int i = 0; i < v.size(); i++)
            agregarFila(v.get(i));
    }

    private void consultarProductos() {
        reiniciar();
        tituloProductos();
        LinkedList<String []> v = modeloProducto.listarVentas();
        for (int i = 0; i < v.size(); i++)
            agregarFila(v.get(i));
    }

     private void consultarMas() {
        reiniciar();
        tituloMas();
        LinkedList<String []> v = modeloProducto.ingredientesMasUsados();
        for (int i = 0; i < v.size(); i++)
            agregarFila(v.get(i));
    }

    private void reiniciar() {
        modeloTabla.setRowCount(0);
    }

}
